package main

import (
	"fmt"
	"net"
	"os"
)

/*
socket
服务端
net包中有一个类型TCPConn，这个类型可以用来作为客户端和服务器端交互的通道，他有两个主要的函数：
func (c *TCPConn) Write(b []byte) (int, error)
func (c *TCPConn) Read(b []byte) (int, error)
获取一个TCPAddr,net参数是"tcp4"、"tcp6"、"tcp"中的任意一个，分别表示TCP(IPv4-only), TCP(IPv6-only)或者TCP(IPv4, IPv6的任意一个);
addr表示域名或者IP地址，例如"www.google.com:80" 或者"127.0.0.1:22"。
func ResolveTCPAddr(net, addr string) (*TCPAddr, os.Error)

客户端
net包中的DialTCP函数来建立一个TCP连接，并返回一个TCPConn类型的对象:
 network参数是"tcp4"、"tcp6"、"tcp"中的任意一个，分别表示TCP(IPv4-only)、TCP(IPv6-only)或者TCP(IPv4,IPv6的任意一个)
 laddr表示本机地址，一般设置为nil
 raddr表示远程的服务地址
func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error)
*/

func main() {
	if len(os.Args) != 2 {
		fmt.Fprintf(os.Stdout, "Usage: %s ip-addr\n", os.Args[0])
		os.Exit(1)
	}
	name := os.Args[1]
	addr := net.ParseIP(name)
	if addr == nil {
		fmt.Println("Invalid address")
	} else {
		fmt.Println("The address is", addr.String())
	}
	os.Exit(0)
}
